package com.crm.service;

import com.crm.dao.IProcessDao;
import com.crm.model.Process;
import com.crm.model.User;

import java.util.List;

/**
 * @author <a href="mailto:huang0510@hotmail.com">HuangHuang</a>
 * @version $Id$
 */
public interface IProcessService {

    /**
     * 新建业务沟通信息。
     *
     * @param process 业务沟通信息实体。
     */
    void create(Process process);

    /**
     * 更新业务沟通信息。
     *
     * @param process 业务沟通信息实体。
     */
    void update(Process process);

    /**
     * 删除一条业务沟通信息。
     *
     * @param process 业务沟通信息实体。
     */
    void delete(Process process);

    /**
     * 获取所有业务沟通信息。
     *
     * @return 所有业务沟通信息列表。
     */
    List getProcesses();

    /**
     * 按用户和关键字检索相关的业务沟通信息。
     *
     * @param user         用户信息
     * @param searchParams 检索关键字->searchParams[0]; 检索字段->searchParams[1]
     * @return 返回检索到的业务沟通信息
     */
    List getProcesses(User user, String[] searchParams);

    /**
     * 按联系人ID获取业务沟通信息。
     *
     * @param contactId 联系人ID
     * @return 返回与某联系人的所有业务沟通信息列表。
     */
    List getProcessByContactId(String contactId);

    /**
     * 获取指定用户的业务处理数据。
     *
     * @param user 用户信息
     * @return 返回业务处理信息列表
     */
    List getProcessByUser(User user);

    /**
     * 按业务沟通信息ID获取指定的业务沟通信息。
     *
     * @param processId 业务沟通信息ID
     * @return 返回指定的一条沟通信息。
     */
    Process getProcessById(String processId);

    /**
     * 根据用户的属性获取相关的未处理的业务沟通数据。
     *
     * @param user 系统用户对象。
     * @return 返回业务沟通信息列表。
     */
    List getProcessByNoHandle(User user);

    /**
     * 产生一个新的业务沟通信息序列号。
     *
     * @param contactId 联系人ID。
     * @return 返回最新的序列号。
     */
    public String getNewSerialNum(String contactId);

    List getRecycleProc(String contactId);
}
